export class UUID {
  constructor() {
    this.buffer = "";
  }

  create() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
      s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    this.buffer = s.join("");
    return this;
  }

  noSplit() {
    this.buffer = this.buffer.replace(/-/g, '');
    return this;
  }

  short(length) {
    if (length < this.buffer.length) {
      this.buffer = this.buffer.substr(0, length);
    }
    return this;
  }

  value() {
    return this.buffer;
  }
}
